frappe.ui.form.on('Fixed Expense Table CN', {
    refresh: function(frm) {
        // 批量填充按钮：全年金额相同
        frm.add_custom_button(__('Batch Fill'), function() {
            frappe.prompt([
                {fieldname: 'amount', label: 'Amount', fieldtype: 'Currency', reqd: true}
            ], function(data) {
                frm.doc.monthly_amounts = [];
                for (let i = 1; i <= 12; i++) {
                    let row = frappe.model.add_child(frm.doc, 'Fixed Expense Month', 'monthly_amounts');
                    row.month = i;
                    row.amount = data.amount;
                    row.post_status = 'Pending';
                }
                frm.refresh_field('monthly_amounts');
                frappe.msgprint(__('已为1-12月批量设置金额'));
            });
        });

        // 手动触发当月记账（支持自定义凭证编号系列）
        frm.add_custom_button(__('Post Current Month'), function() {
            // 弹出输入框，让用户指定Journal Entry的编号系列
            frappe.prompt([
                {
                    fieldname: 'journal_series',
                    label: 'Journal Entry 编号系列',
                    fieldtype: 'Data',
                    reqd: true,
                    default: `.${frm.doc.company}.-结转-.YY.MM.-`,  // 默认格式（带公司名和日期）
                    description: __('支持占位符：{company}=公司名，YY=年份，MM=月份（示例：.NORM-结转-YY.MM.-）')
                }
            ], function(data) {
                // 调用后端方法时传递自定义系列
                frappe.call({
                    method: 'cas.cas.doctype.fixed_expense_table.fixed_expense_table.post_current_month',
                    args: {
                        name: frm.doc.name,
                        journal_series: data.journal_series  // 传递自定义系列参数
                    },
                    callback: function(r) {
                        if (r.message) {
                            frappe.msgprint(__('已生成凭证：{0}', [r.message]));
                            frm.refresh();
                        }
                    },
                    error: function(r) {
                        frappe.msgprint(__('操作失败：{0}', [r.message]));
                    }
                });
            });
        });
    }
});